从前面的 pipeline 示例可以看出,正常情况下,我们不会直接在 Jenkins 这台机器上进行 Build 相关操作的,为了满足不同的条件,我们需要不同的环境,所以我们需要专门的机器,来构建我们的 build 环境。
下面我们就来看一下,怎么在 Jenkins 中添加一个节点,将这节点作为 build 主机,在该主机上进行 build。
准备一台虚拟机,作为 Django 的 build 节点,并配置:
安装 Java
安装 python3-pip
通过 pip 安装 Django, pylint, pylint-django
安装 docker(我们这里是通过 docker build Django container 的)
环境准备好后,我们就可以添加节点了,我们这里使用的是 ssh 的方式,所以,在添加节点之前,你需要配置好相关凭据。关于凭据,可以参考前面关于凭据的内容。
登录到 Jenkins,点击 Manage Jenkins > Nodes,点击右边的 New Node 按钮,添加新的 Node。
在 Node name 文本框中,输入节点的名称,并选择 Type,如果是第一次添加节点,则只有一个 Permanent Agent 选项。
填写下面信息
其他信息,可以根据需要填写。
填写完成后,点击 Save 保存。然后我们就可以在 Nodes 页面就可以看到你添加的 Node 了。
点击对应的 node,可以通过左边的 Log 选项,查看对应的 log,如果出现 “Agent successfully connected and online”,则表示添加成功。
修改我们前面的 pipeline,更改 agent。
pipeline {
    agent { label 'django' }
    stages {
        stage('Pull') {
            steps {
                retry(3) {
                    git branch: 'master', url: 'https://github.com/Aaron-Yu1/mysite_django.git'
                }
            }
        }
        stage('Test') {
            steps {
                sh 'pylint --rcfile=pylint.conf base'
                sh 'echo Unit Testing...'
            }
        }
        stage('Build') {
            steps {
                sh ''' 
                    mkdir django
                    mv $(ls --ignore=django --ignore=nginx_dockerfile --ignore=django_dockerfile) django
                    cd django
                    tar -zcvf Django.tar.gz ./*
                    cp Django.tar.gz ../django_dockerfile
                    cd ../django_dockerfile
                    docker build -t django:v1 .
                    cd ../nginx_dockerfile
                    docker build -t nginx:v1 .
                '''
            }
        }
    }
    post { 
        cleanup { 
            sh '''
                rm -rf ./*
                docker builder prune -f
            '''
        }
    }
}